V6.1.1.6-6.2.0.29升级指引

一、 迁移指引

1、 从V6.1升级到V6.2

以下2点请根据实际情况进行升级,其他的升级内容可根据实际情况进行更新。

  1. 升级后SDK默认协议只会兼容V5的设备,所以如果还有v5的设备,必须设置协议兼容V5。

    XLinkConfig *config = [[XLinkConfig alloc] init];
    config.supportVersionFlag |= XLinkSupportVersionV5;
    [[XLinkSDK share] startWithConfig:config];
  2. 升级之后默认不会和设备进行内网的连接,如需要请设置XLinkConfig对应的标志位autoLocalConnection

    XLinkConfig *config = [[XLinkConfig alloc] init];
    config.autoLocalConnection = YES;
    [[XLinkSDK share] startWithConfig:config];

二、更新内容

1、 新增

1.1、 SDK新增logout的方法

和logoutAndStop对比, logout只会清除相关的用户信息,不会停止SDK的运行,因此再次使用SDK的时候就不需要重新 start SDK。

  • logout方法一般适用于在用户退出登陆的时候调用,可能还会重新登录继续使用SDK的相关功能。
  • logoutAndStop一般适用于用户退出登陆,并且可能之后都不再使用 SDK 的相关功能,为了节省电量和网络资源,可以可以调用logoutAndStop。之后如果需要继续使用 SDK 的相关功能,必须重新调用start。

1.2、 XLinkConfig新增协议兼容标志位

升级后SDK默认协议只会兼容V5的设备,所以如果还有v5的设备,必须设置协议兼容V5。通过配置支持的协议可使 SDK 进行一些通讯数据上的优化,也会在一定程序上提高数据的通讯效率,降低丢包率

增加的属性为:

///协议版本,默认协议版本为v6.如需要兼容v5设备,需要调用`supportVersionFlag |= XLinkSupportVersionV5;`
@property (assign, nonatomic) XLinkSupportVersion supportVersionFlag;

其中flag的枚举类型和值如下:

typedef NS_OPTIONS(NSUInteger, XLinkSupportVersion) {
    XLinkSupportVersionV5 = 1 << 0,//v5协议版本
    XLinkSupportVersionV6 = 1 << 1,//v6协议版本
};

1.3、 XLinkConfig新增是否自动连接内网的标志位

在某些情况下对于内网的功能并不依赖,但是维护内网连接是会消耗一定的资源与数据通讯处理,并且大部分情况下通过外网即可完成相应的功能;因此当使用的场景基本不需要设备内网连接时,建议设置关闭此配置,有助于提升 SDK 的处理效率,减少资源占用。

///是否开启开启全局的本地自动连接功能,默认值为NO.
@property (assign, nonatomic) BOOL autoLocalConnection;

另外以下几种情况,都会根据具体的参数改变自动连接的策略。
1、在调用XLinkSyncDeviceListTaskconnectLocal字段选择了YES
2、XLinkConnectDeviceTaskXDeviceManager中的连接策略选择了连接内网。

1.4、 XLinkConfig新增了全局回调的线程

在配置参数中增加了回调线程,在所有的Task、delegate的回调中,都会在设置的线程中进行回调。如果不进行设置的话,默认为在主线程。

///SDK全局的回调线程,默认为主线程。
@property(strong, nonatomic) dispatch_queue_t callbackQueue;

1.5、 新增验证码登陆功能-XLinkSmsAuthorizeTask。

在调用验证码登陆功能前,需要自行调用restful接口进行验证码的获取。
注:
若未注册过的手机号,则会自动注册账号。
通过短信验证码登录并注册的账号,默认情况下没有登录密码,无法通过正常的账号密码方式登录。

相关的接口在XLinkRestkit文件中,接口详情如下:

/** 18 短信验证登录--发送手机验证码 @param phone 手机号 @param phoneZone 手机区号,不填则默认中国:+86 @param captcha 图片验证码 @param handler 完成后的回调 */
+ (void)sendVerifyCodeForUserAuthWithPhone:(NSString *)phone
                                 phoneZone:(NSString * _Nullable)phoneZone
                                   captcha:(NSString * _Nullable)captcha
                         completionHandler:(XLinkRestCompletionHandler)handler;

当获取短信码接口接口超过一定次数之后,接口会返回需要图片验证码的错误,则需要调用以下接口获取图片验证码。

/** 19 短信验证登录--请求或刷新发送短信的图片验证码 @param phone 手机号 @param phoneZone 手机区号,不填则默认中国:+86 @param handler 完成后的回调 */
+ (void)getCaptchaForUserAuthWithPhone:(NSString *)phone
                             phoneZone:(NSString * _Nullable)phoneZone
                     completionHandler:(XLinkRestCompletionHandler)handler;

获取到验证码之后,需要调用以下接口进行用户的授权登陆。

/** 构建使用短信验证码进行授权任务 @param phone 手机 @param phoneZone 手机区号 @param verifyCode 短信验证码 @param cropId 企业ID @param timeout 超时时间 @param completionHandler 完成后的回调 */
+ (instancetype)smsAuthorizeTaskWithPhone:(NSString *)phone
                                phoneZone:(NSString *_Nullable)phoneZone
                               verifyCode:(NSString *)verifyCode
                                   cropId:(NSString *)cropId
                                  timeout:(NSUInteger)timeout
                        completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;

1.6、 新增新增快捷登录任务-XLinkRefreshTokenTask。

如果用户已经进行过登录,且不希望再次要求用户登录应用时需要输入账号和密码时,可以使用此快捷登录任务进行登录。快捷登录要求需要提供用户此前已登录过的缓存授权信息。

XLinkRefreshTokenTask *refreshTask = [XLinkRefreshTokenTask refreshTokenTaskWithUserAuthorizeDictionary:dic timeout:10 completionHandler:^(id  _Nullable result, NSError * _Nullable error) {
        if (error) {
            //登陆失败
        } else {
            //登陆成功
        }
    }];
    [refreshTask start];

//使用快捷登录时,请不要在初始化时配置用户信息

注意事项:
1.快捷登录任务是一个任务,请务必启动 SDK 之后才能使用;
2.使用快捷登录任务时,请不要在初始化时配置用户信息,会造成冲突;
3.推荐使用新的快捷登录方式(若旧方式可满足需求也不需要变更)

2、删除

2.1、 XLinkSDK删除断开连接设备本地连接的方法。

方法详情如下:

- (``void``)disconnectLocalWithDevice:(XDevice *)device;

3、 改动

3.1、 订阅方式优化

此版本更新了一种新的订阅方式,该订阅方式与原订阅方式在实现处理上是完全不同的,相对于原有的订阅方式更加高效,灵活性也更强。

新的订阅方式主要通过以下流程进行:
\1. 设备开启订阅使能
\2. 从设备获取 pinCode,校验码
\3. 从云端获取订阅码
\4. 发送订阅码给设备
\5. 设备提交订阅码到云端验证
\6. 接收云端订阅结果返回

在普通场景下,仅需要使用一个任务即可完全以上所有操作,并且任务兼容旧的任务,是属于相同的任务类。

/** 构建添加设备任务 @param device 要添加的设备 @param pinCode 安全码,一般为设备会显示出来,需要设备支持。没有的时候传nil即可 @param timeout 设置超时,单位秒,默认90秒 @param completionHandler 任务完成后回调 @return XLinkAddDeviceTask */
+ (instancetype)addDeviceTaskWithDevice:(XDevice *)device
                                pinCode:(NSData * _Nullable)pinCode
                                timeout:(NSUInteger)timeout
                      completionHandler:(XLinkTaskDidCompletionHandler)completionHandler

注:
\1. 以上任务与原订阅任务完全相同,差异在于需要提供来自设备的 pinCode
\2. 若不设置设备的 pinCode,默认为设备的 mac 地址,注意设备的 pinCode 应该是厂商决定的,只有厂商决定 pinCode 使用设备的 mac 地址时,才可以不设置

三、版本更新说明

类别
配置更新 1.SDK新增logout的方法 2.新增支持的协议类型配置接口,优化数据通讯 3.新增内网自动连接配置接口,默认不开启 4.新增回调线程的设置
订阅优化 1.新增短信登录任务
接口更新 1.新增短信登陆的restful接口 2.新增快捷登录任务
其他优化 1.修正错误的注释描述
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题